HAL DMA linked-list management functions migration

This section provides information about the HAL DMA io operation functions migration.

HAL DMA operation functions in polling mode

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_BuildNode(DMA_NodeConfTypeDef const *const pNodeConfig,
                                  DMA_NodeTypeDef *const pNode);
hal_status_t HAL_DMA_FillNodeConfig(hal_dma_node_t *p_node, const hal_dma_node_config_t *p_conf,
                           hal_dma_node_type_t node_type);
HAL_StatusTypeDef HAL_DMAEx_List_GetNodeConfig(DMA_NodeConfTypeDef *const pNodeConfig,
                                      DMA_NodeTypeDef const *const pNode);
void HAL_DMA_GetNodeConfig(const hal_dma_node_t *p_node, hal_dma_node_config_t *p_conf,
                  hal_dma_node_type_t *p_node_type);
HAL_StatusTypeDef HAL_DMAEx_List_ConvertQToDynamic(DMA_QListTypeDef *const pQList);
hal_status_t HAL_DMA_ConvertQNodesToDynamic(hal_q_t *p_q);
HAL_StatusTypeDef HAL_DMAEx_List_ConvertQToStatic(DMA_QListTypeDef *const pQList);
hal_status_t HAL_DMA_ConvertQNodesToStatic(hal_q_t *p_q);

In HAL2, all queuing functions are removed from HAL DMA driver and replaced in the HAL Q driver.

HAL DMA configure circular mode

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_SetCircularModeConfig(DMA_QListTypeDef *const pQList,
                                              DMA_NodeTypeDef *const pFirstCircularNode);
hal_status_t HAL_Q_SetCircularLinkQ(hal_q_t *p_q, void *p_node);
HAL_StatusTypeDef HAL_DMAEx_List_ClearCircularMode(DMA_QListTypeDef *const pQList);
hal_status_t HAL_Q_ClearCircularLinkQ(hal_q_t *p_q);
HAL_StatusTypeDef HAL_DMAEx_List_SetCircularMode(DMA_QListTypeDef *const pQList);
hal_status_t HAL_Q_SetCircularLinkQ_Head(hal_q_t *p_q);

HAL DMA insert node

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_InsertNode(DMA_QListTypeDef *const pQList,
                                   DMA_NodeTypeDef *const pPrevNode,
                                   DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_InsertNode(hal_q_t *p_q, const void *p_node, void *p_new_node);
HAL_StatusTypeDef HAL_DMAEx_List_InsertNode_Head(DMA_QListTypeDef *const pQList,
                                        DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_InsertNode_Head(hal_q_t *p_q, void *p_new_node);
HAL_StatusTypeDef HAL_DMAEx_List_InsertNode_Tail(DMA_QListTypeDef *const pQList,
                                        DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_InsertNode_Tail(hal_q_t *p_q, void *p_new_node);

HAL DMA remove node

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_RemoveNode(DMA_QListTypeDef *const pQList,
                                   DMA_NodeTypeDef *const pNode);
hal_status_t HAL_Q_RemoveNode(hal_q_t *p_q, const void *p_node);
HAL_StatusTypeDef HAL_DMAEx_List_RemoveNode_Head(DMA_QListTypeDef *const pQList);
hal_status_t HAL_Q_RemoveNode_Head(hal_q_t *p_q);
HAL_StatusTypeDef HAL_DMAEx_List_RemoveNode_Tail(DMA_QListTypeDef *const pQList);
hal_status_t HAL_Q_RemoveNode_Tail(hal_q_t *p_q);

HAL DMA replace node

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_ReplaceNode(DMA_QListTypeDef *const pQList,
                                    DMA_NodeTypeDef *const pOldNode,
                                    DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_ReplaceNode(hal_q_t *p_q, const void *p_old_node, void *p_new_node);
HAL_StatusTypeDef HAL_DMAEx_List_ReplaceNode_Head(DMA_QListTypeDef *const pQList,
                                         DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_ReplaceNode_Head(hal_q_t *p_q, void *p_new_node);
HAL_StatusTypeDef HAL_DMAEx_List_ReplaceNode_Tail(DMA_QListTypeDef *const pQList,
                                         DMA_NodeTypeDef *const pNewNode);
hal_status_t HAL_Q_ReplaceNode_Tail(hal_q_t *p_q, void *p_new_node);

HAL DMA reset queue

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_ResetQ(DMA_QListTypeDef *const pQList);
void         HAL_Q_DeInit(hal_q_t *p_q);

HAL DMA insert queue

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_List_InsertQ(DMA_QListTypeDef *const pSrcQList,
                                DMA_NodeTypeDef const *const pPrevNode,
                                DMA_QListTypeDef *const pDestQList);
hal_status_t HAL_Q_InsertQ(hal_q_t *p_dest_q, hal_q_t *p_src_q, const void *p_node);
HAL_StatusTypeDef HAL_DMAEx_List_InsertQ_Head(DMA_QListTypeDef *const pSrcQList,
                                     DMA_QListTypeDef *const pDestQList);
hal_status_t HAL_Q_InsertQ_Head(hal_q_t *p_dest_q, hal_q_t *p_src_q);
HAL_StatusTypeDef HAL_DMAEx_List_InsertQ_Tail(DMA_QListTypeDef *const pSrcQList,
                                     DMA_QListTypeDef *const pDestQList);
hal_status_t HAL_Q_InsertQ_Tail(hal_q_t *p_dest_q, hal_q_t *p_src_q);

HAL DMA data handling, trigger and repeated block configuration functions

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_ConfigDataHandling(DMA_HandleTypeDef *const hdma,
                                      DMA_DataHandlingConfTypeDef const *const pConfigDataHandling);
hal_status_t HAL_DMA_SetConfigDirectXferDataHandling(hal_dma_handle_t *hdma,
                                            const hal_dma_data_handling_config_t *p_config);
HAL_StatusTypeDef HAL_DMAEx_ConfigTrigger(DMA_HandleTypeDef *const hdma,
                                 DMA_TriggerConfTypeDef const *const pConfigTrigger);
hal_status_t HAL_DMA_SetConfigDirectXferTrigger(hal_dma_handle_t *hdma, const hal_dma_trigger_config_t *p_config);
HAL_StatusTypeDef HAL_DMAEx_ConfigRepeatBlock(DMA_HandleTypeDef *const hdma,
                                     DMA_RepeatBlockConfTypeDef const *const pConfigRepeatBlock);
hal_status_t HAL_DMA_SetConfigDirectXferRepeatBlock(hal_dma_handle_t *hdma,
                                           const hal_dma_repeat_block_config_t *p_config);

HAL DMA suspend and resume operation functions

HAL1

HAL2

HAL_StatusTypeDef HAL_DMAEx_Suspend(DMA_HandleTypeDef *const hdma);
hal_status_t HAL_DMA_Suspend(hal_dma_handle_t *hdma);
HAL_StatusTypeDef HAL_DMAEx_Suspend_IT(DMA_HandleTypeDef *const hdma);
hal_status_t HAL_DMA_Suspend_IT(hal_dma_handle_t *hdma);
HAL_StatusTypeDef HAL_DMAEx_Resume(DMA_HandleTypeDef *const hdma);
hal_status_t HAL_DMA_Resume(hal_dma_handle_t *hdma);

HAL DMA FIFO status function

HAL1

HAL2

uint32_t HAL_DMAEx_GetFifoLevel(DMA_HandleTypeDef const *const hdma);
uint32_t HAL_DMA_GetFifoDataByte(const hal_dma_handle_t *hdma);